package data_structure;

public class leetcode_0151 {
    public String reverseWords(String s) {
        int len=s.length();
        char[] list=s.toCharArray();
        reverse(list,0,len-1);
        int left=0;
        int right=0;
        boolean flag=false;
        for(int i=0;i<len;++i){
            if(!flag&&list[i]!=' '){
                left=i;
                flag=true;
            }
            if(flag&&i==len-1){
                right=len-1;
                reverse(list,left,right);
            }
            else if(flag&&list[i]==' '){
                right=i-1;
                reverse(list,left,right);
                flag=false;
            }
        }
        flag=false;
        String result="";
        int num=0;
        for(int i=len-1;i>=0;--i){
            if(list[i]!=' ') break;
            num++;
        }
        for(int i=0;i<len-num;++i){
            if(flag&&list[i]==' '){
                result+=" ";
                flag=false;
            }
            else if(list[i]!=' '){
                flag=true;
                result+=list[i];
            }
        }
        return result;
    }
    public void reverse(char[] list,int left,int right){
        while(left<right){
            char a=list[left];
            list[left]=list[right];
            list[right]=a;
            left++;right--;
        }
    }
}
